﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Text;
using T.FAS.Runtime.Metadata.Entity;
using T.FAS.Runtime.Metadata.Service;
using T.FAS.Runtime.Metadata.SPI;
namespace T.FAS.Runtime.Metadata.Client
{
    class MetaDataHSFService
    {
        public static bool IsLocalModel
        {
            get
            {
                var config = ConfigurationManager.AppSettings["MetaDataLocalModel"];
                if (config != null)
                {
                    var configValue = Convert.ToString(config).ToLower();
                    if (configValue == "1" || configValue == "true")
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
        }
        /// <summary>
        /// 获取元数据(HSF服务模式)
        /// </summary>
        /// <param name="metaDataId">元数据ID</param>
        /// <returns>元数据</returns>
        public static IMetaData GetMetaData(string metaDataId)
        {
            if (string.IsNullOrWhiteSpace(metaDataId))
                throw new ArgumentNullException("MetaDataHSFService.GetMetaData.metaDataId");
            IMetaData metaData = null;
            if (IsLocalModel)
            {
                metaData = new MeteDataService().GetMetaData(metaDataId);
            }
            else
            {
                // metaData = HSFService.Proxy<IMetaDataService>().GetMetaData(metaDataId);

            }
            return metaData;
        }
        /// <summary>
        /// 获取元数据(HSF服务模式)
        /// </summary>
        /// <param name="metaDataId">元数据ID</param>
        /// <returns>元数据</returns>
        public static IMetaData GetMetaDataByCode(string metaDataCode, string metaTypeID)
        {
            if (string.IsNullOrWhiteSpace(metaDataCode))
                throw new ArgumentNullException("MetaDataHSFService.GetMetaData.metaDataCode");
            IMetaData metaData = null;
            if (IsLocalModel)
            {
                metaData = new MeteDataService().GetMetaDataByCode(metaDataCode, metaTypeID);
            }
            else
            {
                // metaData = HSFService.Proxy<IMetaDataService>().GetMetaDataByCode(metaDataCode, metaTypeID);
            }
            return metaData;
        }
    }
}
